package Homework;

public class work02 {
    public static void main(String[] args) {
        //synchronized 和Volatitle 的区别？
/*
		volatile 关键字用于标记一个变量，告诉编译器和虚拟机该变量是共享的，每次访问时都要从主内存
		中读取，而不是从线程的工作内存中读取。
		当一个线程修改了 volatile 变量的值，这个新值会立即被其他线程看到，保证了变量的可见性。
		volatile 主要用于标识状态标志位或者简单的数值，不适用于复合操作的原子性保证。

		synchronized 是 Java 中的关键字，用于实现同步，可以修饰代码块或方法。
		当一个线程进入 synchronized 代码块或方法时，它会尝试获取对象的锁，如果获取成功，就可以
		执行代码；如果获取失败，就会被阻塞直到获取到锁为止。
		synchronized 不仅保证了变量的可见性，还保证了原子性，即一个线程执行 synchronized 代码
		块或方法时，其他线程无法同时执行该代码块或方法，从而避免了竞态条件和数据不一致的问题。
		综上所述，volatile 适用于单个变量的可见性保证，而 synchronized 适用于代码块或方法的原
		子性和互斥性保证。通常情况下，volatile 的开销比 synchronized 小，但 synchronized 更
		加灵活，能够处理更复杂的同步需求。*/
    }
}
